#!/usr/bin/env python
#coding=utf-8

# 判断是否属于同一个对象
a = b = 5
print a is b # is not 函数
print id(a) == id(b)

a = 1.0
b = 1.0
print id(a)
print id(b)
"""
94668238637488
94668238637488
地址一样
"""
# cmp 内建函数  标准类型 	
print cmp(a,b)
b = 2.0
print cmp(a,b)

# `` repr 转为 字符串 str 也是
st = 123
print str(st), type(str(st))
print `st`, type (`st`)
print eval(`st`), type(eval(`st`))# eval 转为原来的对象

# 展示数字的类型
def displayNumType(num):
	print num, 'is',
	if isistance(num, (int, long, float, complex)):
		print 'a number of type:', type(num).__name__
	else:
		print 'not a number at all!!!'

# 数值对象和字符串对象是不可更改的对象
# 列表可以被修改而无需替换原始对象

# 虚数
a = -8-8j
print a.real
print a.imag
print a.conjugate() # 共轭


# 除法
print 1 / 2 # 0
print 1.0 / 2.0 # 0.5

# 地板除法  得到  商 
print 1 // 2
print 1.0 // 2.0


# 位操作符 只适用于整形

# divmod(10,3) = (3,1) 10 / 3 = 3 ...... 1

# round(a,b) a 要四舍五入的数值  b 精确到小数点后几位
print round(3.45) 

# floor(a) 最接近元素但是比原数小的整数

# coerce(a,b) 
print coerce(1,1.0) # 返回  (1.0, 1.0)

# 仅仅适用于整形的函数
print hex(255) # 16进制

print oct(255) # 8进制

print ord('a') # ascll -> num

print chr(48) # num -> ascll

print unichr(100) # 返回对应unicode字符

# bool
# 无 __nonzero__() 返回true
# 有 __nonzero__() 根据返回值返回

class C:pass
c = C()

print bool(c), bool(C)

class C:
	def __nonzero__(self):
		return False
c = C()
print bool(c), bool(C)